﻿using System;
using System.Collections.Generic;

namespace Scrum.Net.Interfaces
{
    /// <summary>
    /// Sprint is an iteration of one month or less that is of consistent length throughout a development effort.
    /// </summary>
    public interface ISprint
    {
        /// <summary>
        /// Name of the sprint
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Start of the sprint
        /// </summary>
        DateTime StartDate { get; set; }

        /// <summary>
        /// End of the sprint
        /// </summary>
        DateTime EndDate { get; set; }

        /// <summary>
        /// The Sprint Backlog is a list of tasks to turn the Product Backlog for one Sprint into an increment of potentially shippable product.
        /// </summary>
        IList<ISprintStory> Backlog { get; }

        /// <summary>
        /// Goals of the sprint
        /// </summary>
        IList<ISprintGoal> Goals { get; }

        IList<ISprintAvailability> Availability { get; }

        /// <summary>
        /// Starts the Sprint, addes Availabiltys etc.
        /// </summary>
        void StartSprint();

        /// <summary>
        /// Calculate the sprint availibities of the users.
        /// </summary>
        void CalculatingAvailabilities();
    }


    public interface ISprintReview
    {
        // I don't know
    }

    public interface ISprintRetrospective
    {
        // I don't know
    }
}